#ifndef TEMPLATE_UTILS_TRAITS_HPP_
# define TEMPLATE_UTILS_TRAITS_HPP_

namespace		Utils
{
  template<typename T>
  class	Traits
  {
  public:
	typedef T	Type;
  };

  template<typename T>
  class	Traits<T*>
  {
  public:
	typedef typename Traits<T>::Type	Type;
  };

  template<typename T>
  class	Traits<T&>
  {
  public:
	typedef typename Traits<T>::Type	Type;
  };

  template<typename T>
  class	Traits<T const>
  {
  public:
	typedef typename Traits<T>::Type	Type;
  };

  template<typename T>
  class	Traits<T volatile>
  {
  public:
	typedef typename Traits<T>::Type	Type;
  };

  template<typename T>
  class	Traits<T (*)()>
  {
  public:
	typedef typename Traits<T>::Type	Type;
  };
}

#endif
